/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 黎鹤舞
 * Date: 2023-11-05
 * Time: 11:15
 */
public class Test {

    //用于表示hanoi的逻辑过程
        public static void hanoi(int n,char pos1,char pos2, char pos3) {      //这里参数n表示要移动的盘数，pos1表示起始位置，pos2表示中间位置，pos3表示结束位置
        //如果只有一个盘子的情况下:
        if(n == 1) {
            move(pos1,pos2);
        }else {
            //第一步：把上面N-1个盘子 移动到中间位置
            hanoi(n-1,pos1,pos3,pos2);
            //第二步：把最底下的盘子 从起始位置移动到结束位置
            move(pos1,pos2);
            //第三步：把上面N-1个盘子从**中间位置（即hanoi(n-1)的起始位置）**移动到结束位置
            hanoi(n-1,pos2,pos1,pos3);
        }
    }
    public static void move(char pos1, char pos2) {
        System.out.println(pos1+"->"+pos2);
    }
    public static void main(String[] args) {
        hanoi(3,'A','B','C');
    }

    public static int fac(int n) {
        if(n == 1) {
            return 1;
        }else {
            return fac(n-1) * n;
        }
    }
    public static void main1(String[] args) {
        int ret = fac(5);
        System.out.println(ret);
    }
}
